home *** CD-ROM | disk | FTP | other *** search
/ Aminet 32 / Aminet 32 (1999)(Schatztruhe)[!][Aug 1999].iso / Aminet / text / edit / Skriptmanagr14.lha / Skriptmanager1.4 / Spell.DAT (.txt) < prev   
CanDo Variables/Data  |  1999-05-17  |  45KB  |  2,036 lines

  1. @CDVRANNO
  2. CanDoVar Ver1
  3. GUIDE
  4. LINKNAME
  5. TRACE(Option)
  6.     LINKROUTE
  7. TRACE(Option)L
  8. LINKKOMMENTAR
  9. LINKTEXT
  10. Ram Disk:LLL/TRACE(Option)L.txt
  11. LINKNAME
  12. SYMBOL(Name)
  13.     LINKROUTE
  14. SYMBOL(Name)L
  15. LINKKOMMENTAR
  16. LINKTEXT
  17. Ram Disk:LLL/SYMBOL(Name)L.txt
  18. LINKNAME
  19. SOURCELINE([Zeile])
  20.     LINKROUTE
  21. SOURCELINE([Zeile])L
  22. LINKKOMMENTAR
  23. LINKTEXT
  24. %Ram Disk:LLL/SOURCELINE([Zeile])L.txt
  25. LINKNAME
  26. REMLIB()
  27.     LINKROUTE
  28.     REMLIB()L
  29. LINKKOMMENTAR
  30. LINKTEXT
  31. Ram Disk:LLL/REMLIB()L.txt
  32. LINKNAME
  33. IMPORT(Adresse[,L
  34. nge])
  35.     LINKROUTE
  36. IMPORT(Adresse[,L
  37. LINKKOMMENTAR
  38. LINKTEXT
  39. &Ram Disk:LLL/IMPORT(Adresse[,L
  40. ngL.txt
  41. LINKNAME
  42. GETSPACE(L
  43.     LINKROUTE
  44. GETSPACE(L
  45. nge)L
  46. LINKKOMMENTAR
  47. LINKTEXT
  48. !Ram Disk:LLL/GETSPACE(L
  49. nge)L.txt
  50. LINKNAME
  51. FREESPACE([Addresse,L
  52. nge])
  53.     LINKROUTE
  54. FREESPACE([Addresse,L
  55. LINKKOMMENTAR
  56. LINKTEXT
  57. &Ram Disk:LLL/FREESPACE([Addresse,L.txt
  58. LINKNAME
  59. DATE(Option[,Datum,I|S])
  60.     LINKROUTE
  61. DATE(Option[,Datum,IL
  62. LINKKOMMENTAR
  63. LINKTEXT
  64. &Ram Disk:LLL/DATE(Option[,Datum,IL.txt
  65. LINKNAME
  66. SELECT 
  67.     LINKROUTE
  68. SELECT L
  69. LINKKOMMENTAR
  70. LINKTEXT
  71. Ram Disk:LLL/SELECT L.txt
  72. LINKNAME
  73.     LINKROUTE
  74. EXITL
  75. LINKKOMMENTAR
  76. LINKTEXT
  77. Ram Disk:LLL/EXITL.txt
  78. LINKTEXT
  79. !Ram:LLL/BITXOR(BitStr1[,BitSL.txt
  80. LINKKOMMENTAR
  81.     LINKROUTE
  82. BITXOR(BitStr1[,BitSL
  83. LINKNAME
  84. %BITXOR(BitStr1[,BitStr2,F
  85. llzeichen])
  86. LINKTEXT
  87. Ram:LLL/ABS(Zahl)L.txt
  88. LINKKOMMENTAR
  89.     LINKROUTE
  90. ABS(Zahl)L
  91. LINKNAME
  92.     ABS(Zahl)
  93. GUIDE
  94. LINKTEXT
  95. |Operatoren sind einfach die 
  96. Zeichen, die zwei Variablen oder
  97. sonstige Ausdr
  98. cke auf irgendeine
  99. Art verkn
  100. pfen. 
  101. Also z.B. ein simples +. 
  102. Das Problem ist nur: Wie sollen 
  103. diese Operatoren abgearbeitet 
  104. werden, wenn mehrere in einem 
  105. Ausdruck vorhanden sind? Aus 
  106. Mathe kennst man sicher noch 
  107. "Punkt vor Strich":
  108. Erst mal und geteilt durch, dann 
  109. plus und minus. In ARexx gibt es
  110. eine ganze Priorit
  111. tenliste der 
  112. Operatoren, und auch hier gibt es
  113. welche, die wie Plus und Minus 
  114. die gleiche Priorit
  115. t haben. 
  116. Diese Liste sieht folgenderma
  117. Operator  Pri.  Beschreibung
  118. ~         8     logisches "nicht"
  119. +         8     als Pr
  120. fix zur 
  121.                 Konvertierung
  122. -         8     Pr
  123. **        7     Potenzierung 
  124.                 2**6 meint "2 
  125.                 hoch 6"
  126. *         6     Multiplikation
  127. %         6     ganzzahlige 
  128.                 Division
  129. /         6     Division
  130. //        6     Rest der Division
  131. -         5     Subtraktion
  132. +         5     Addition
  133. Le        4     Verkettung mit 
  134.                 Leerzeichen
  135. ||        4     direkte 
  136.                 Verkettung
  137. ~=        3     absolut ungleich
  138. ==        3     absolut gleich
  139. ~=        3     ungleich
  140. =         3     gleich
  141. >=        3     gr
  142. er/gleich
  143. >         3     gr
  144. <=        3     kleiner/gleich
  145. <         3     kleiner
  146. &         2     logisches UND
  147. |         1     logisches ODER
  148. &&        1     logisches exklu-
  149.                 siv  ODER
  150. Ich denke, es sollte kein Prob-
  151. lem sein, diese Liste anzuwenden. 
  152. Hervorzugheben ist vielleicht 
  153. noch, da
  154.  es gleich extra 
  155. Operatoren f
  156. r eine ganzzahlige
  157. Division gibt, ebenso wie f
  158. r den 
  159. Rest bei einer solchen Operation.
  160. Operatoren
  161. LINKNAME
  162. Operatoren
  163. GUIDE
  164. LINKTEXT
  165. Ist die Kurzform von 
  166. PARSE UPPER ARG und dient zum 
  167. Zerlegen eines 
  168. bergabestrings 
  169. in mehrere Teile.
  170. Ein weiterer Befehl, der dem 
  171. Arg Befehl von der Schreibweise 
  172. des Wortes gleicht, ist Arg().
  173. Lediglich die Klammern verhelfen
  174. diesem Befehl zu einem anderen 
  175. Ergebnis:  
  176.   Arg(nummer,E|O)
  177. Gibt die Anzahl der 
  178. bergebenen
  179. Argumente zur
  180. E    pr
  181. ft, ob ein Argument 
  182.      existiert
  183. O    pr
  184. ft, ob ein Argument
  185.      ausgelassen wurde
  186. LINKNAME
  187. Arg [maske] [,maske]
  188. LINKTEXT
  189. `Schlie
  190. t die Datei mit dem 
  191. logischen Dateinamen.
  192. Diese Datei wurde vorher mit 
  193. open() ge
  194. ffnet.
  195. CLOSE
  196. LINKNAME
  197. Close(datei)
  198. LINKTEXT
  199. ~Gibt einen Wert (String oder 
  200. Zahl) in einem Fenster aus.
  201. Der Befehl SAY() bewirkt noch
  202. tzlich einen Zeilenvorschub 
  203. dazu.
  204. LINKNAME
  205. Echo [ausdruck] 
  206. LINKTEXT
  207. Testet ob eine Datei bereits das
  208. Datei-Ende erreicht hat.
  209. Bei Benutzen von Schleifen ist
  210. diese Funktion 
  211. erst brauch-
  212. FF=Open(test,"Ram:T/skript","R")
  213. DO While ~EOF(test)
  214.    RR=ReadLN(test)
  215.    echo RR||" Nicht Am Ende"
  216. LINKNAME
  217. Eof(datei)
  218. LINKTEXT
  219. ft die Existens einer Datei
  220. oder deren Verzeichnis.
  221. IF exists("T:skript")
  222.   echo existiert
  223. test="T:skript"
  224. IF exists(test)
  225.  echo "existiert"
  226. EXISTS
  227. LINKNAME
  228. Exists(datei)
  229. LINKTEXT
  230. SKurzform von PARSE UPPER PULL
  231. und liest Strings aus einem 
  232. Eingabefenster (STDIN). 
  233. LINKNAME
  234. Pull(Eingabe)
  235. LINKTEXT
  236. mDie Zeilen z
  237. hlen.
  238. Gibt die Zeilen zur
  239. ck, die im 
  240. Eingabepuffer stehen; 
  241. ohne Angabe eines Namens die 
  242. Anzahl der Zeilen, die in STDIN 
  243. stehen.
  244. Unter Umst
  245. nden kann es nat
  246. rlich
  247. auch sinnvoll sein, den Zeiger 
  248. auf ein anderes Zeichen innerhalb
  249. der Datei zu verschieben. 
  250. Das geht zeichenweise vor sich, 
  251. man sollte also genau wissen, 
  252. wie die Datei aufgebaut ist.
  253. LINES
  254. LINKNAME
  255. Ergebnis=LINES(name)
  256. LINKTEXT
  257. ffnet eine reale Datei unter
  258. dem logischen Namen logisch
  259. zum Lesen,
  260. berschreiben oder
  261. ngen. Spezielle logische
  262. Dateien sind STDOUT o. STDIN.
  263. Erfolg=OPEN(Test,"Text:Golded/
  264. Amigaaktuell/ARexx-Kurs/03.txt"
  265. ,"R")
  266. ffnet diesen Text zum Lesen (R)
  267. und weist der Variable Erfolg 
  268. den Wert 1 zu, wenn die Operation
  269. Erfolg hatte, und 0, wenn ein 
  270. Fehler aufgetreten ist 
  271. (z.B., weil ich eine Verzeich-
  272. nisebene ausgelassen habe... :).
  273. Die Datei kann jetzt unter dem 
  274. Namen Test mit anderen Befehlen
  275. angesprochen werden. Das ist der
  276. sogenannte logische Dateiname.
  277. Es gibt folgende Optionen:
  278. R (Read)   -  Lesen
  279. W (Write)  -  Schreiben 
  280. (Achtung: Eine evtl. vorhandene
  281. Datei wird 
  282. berschrieben)                                                             gel
  283. scht!)
  284. A (Append) -  Anh
  285. Statt einer Datei kann man mit
  286. OPEN() auch ein AmigaDos-Device
  287. ffnen, z.B. ein Konsolenfenster
  288. (s.u., RAW:).
  289. Beispiel:
  290. /* Hello World Version 1.5.*/
  291. Erfolg=OPEN(Fenster,'CON:20/20
  292. /620/100/Hello World 1.5./CLOSE'
  293. IF ~Erfolg THEN ECHO "Fehler!"
  294. DO WHILE Eingabe~="Ende"
  295.   Erfolg=WRITELN(Fenster,"Gib 
  296.                   was ein!")
  297.   Eingabe=READLN(Fenster)
  298.   Erfolg=WRITELN(Fenster,"Du hast
  299.       "||Eingabe||" eingegeben.")
  300. -------------------------------
  301. Es reicht auch, einfach nur CON:
  302. einzugeben. Dann kannst man 
  303. allerdings Position und Titel 
  304. des Fensters nicht beeinflussen.
  305. Im Unterschied zu CON: gibt RAW:
  306. -was bedeutet-
  307. jeden Tastendruck sofort weiter.
  308. Es mu
  309.  nicht erst die Return-
  310. Taste gedr
  311. ckt werden.
  312. Auf diese Weise kann man auch 
  313. abfragen, ob eine bestimmte 
  314. Taste gedr
  315. ckt wurde.
  316. LINKNAME
  317. Erfolg=OPEN(logisch,real,R|W|A)
  318. LINKTEXT
  319. Ein oder mehrere Zeichen aus der 
  320. Datei lesen:
  321. Vorsicht! Die Funktion wartet,
  322. bis so viele Zeichen wie 
  323. angegeben eingetrudelt sind!
  324. READ  hei
  325. t Lesen 
  326. CH    steht f
  327. r Char, d.h. 
  328.       Zeichen.
  329. LN    steht f
  330. r Line, d.h. 
  331.       Zeile.
  332. READCH
  333. LINKNAME
  334. Zeichen=READCH(name,Anzahl)
  335. LINKTEXT
  336. Eine ganze Zeile (bis zum 
  337. chsten Absatzendezeichen)
  338. lesen:
  339. READ  hei
  340. t Lesen 
  341. CH    steht f
  342. r Char, d.h. 
  343.       Zeichen.
  344. LN    steht f
  345. r Line, d.h. 
  346.       Zeile.
  347. READLN
  348. LINKNAME
  349. Zeile=READLN(name)
  350. LINKNAME
  351. $NeuePosition=SEEK(name,Offset,Modus)
  352. LINKTEXT
  353. HSetzt den Zeiger (Cursor) auf
  354. eine neue Position innerhalb
  355. einer Datei.
  356. Offset bedeutet die Anzahl der 
  357. Zeichen, die weitergegangen 
  358. werden soll.
  359. Modus kann folgendes sein:
  360. B - Begin
  361. C - Current (momentane Position)
  362. E - End
  363. und besagt, worauf sich der 
  364. Offset bezieht.
  365. Vorsicht mit Offsets, die 
  366. das Dateiende hinausgehen!
  367. LINKNAME
  368. Ergebnis=WRITECH(datei,string)
  369. WRITECH
  370. LINKTEXT
  371. LSchreibt Zeichen in eine Datei
  372. ohne Zeilenende.  
  373. Ergebnis=WRITECH(Test,"Das hier 
  374.            soll in meine Datei 
  375.            geschrieben werden")
  376. Also:
  377. Ein oder mehrere Zeichen in eine
  378. Datei schreiben.
  379. Zum besseren Merken:
  380. WRITE hei
  381. t Schreiben
  382. CH    steht f
  383. r Char, d.h. 
  384.       Zeichen.
  385. LN    steht f
  386. r Line, d.h. 
  387.       Zeile.
  388. LINKNAME
  389. Ergebnis=WRITELN(datei,string)
  390. WRITELN
  391. LINKTEXT
  392. cSchreibt eine Zeile in eine
  393. Datei mit Zeilenende (Return)
  394. am Ende der Zeile. 
  395. Ergebnis=WRITELN(Test,"Das hier 
  396.             soll in meine Datei 
  397.             geschrieben werden")
  398. Am Schlu
  399.  wird ein Absatzende-
  400. zeichen angef
  401. Zum besseren Merken:
  402. WRITE hei
  403. t Schreiben
  404. CH    steht f
  405. r Char, d.h. 
  406.       Zeichen.
  407. LN    steht f
  408. r Line, d.h. 
  409.       Zeile.
  410. LINKNAME
  411. Say(ausdruck)
  412. LINKTEXT
  413.  Wie ECHO, nur mit Zeilenvorschub
  414. GUIDE
  415. LINKTEXT
  416. Testet, ob Kurz eine Abk
  417. rzung 
  418. (abbreviation) von Lang ist.
  419. Optional kann auch noch eine 
  420. Anzahl von Zeichen angegeben 
  421. werden, bis zu der verglichen 
  422. werden soll.
  423. Liefert 0 (falsch) oder 1 (wahr)
  424. ABBREV
  425. LINKNAME
  426. ABBREV(Lang,Kurz,L
  427. LINKTEXT
  428. jLiefert einen String, der die 
  429. nge angegebene Zahl von 
  430. Zeichen hat. 
  431. Optional kann ein F
  432. llzeichen 
  433. angegeben werden.
  434. ECHO CENTRE("TesttextTesttext",4)
  435. ECHO CENTRE("TesttextTesttext"
  436.   TESTTEXTTESTTEXT
  437. ECHO CENTRE("TesttextTesttext"
  438. ,20,".")
  439. ..TESTTEXTTESTTEXT..
  440. ECHO CENTRE("TesttextTesttext"
  441. ,40,".")
  442. ............TESTTEXTTESTTEXT............
  443. CENTER
  444. LINKNAME
  445. CENTER(Text,L
  446. nge,F
  447. llzeichen)
  448. LINKTEXT
  449. Entfernt die in Liste angegebenen 
  450. Zeichen aus einer Zeichenkette. 
  451. Wird Liste nicht angegeben, 
  452. entfernt es alle Leerzeichen.
  453. ECHO COMPRESS("Haeaikgog 
  454. Kausgchael","ag")
  455. COMPRESS
  456. LINKNAME
  457. COMPRESS(String[,Liste])
  458. LINKTEXT
  459. Gibt die erste Stelle zur
  460. an der sich die beiden Texte 
  461. unterscheiden.
  462. Optional kann angegeben werden, 
  463. mit welchem F
  464. llzeichen der 
  465. rzere der Texte aufgef
  466. werden soll, wenn die zwei nicht
  467. gleich lang sind. 
  468. Voreingestellt sind Leerzeichen.
  469. COMPARE
  470. LINKNAME
  471. "COMPARE(Text1,Text2[,F
  472. llzeichen])
  473. LINKTEXT
  474. RGibt Zeichenkette so oft aus, wie
  475. man will. Nur negativ darf die 
  476. Zahl nicht sein.
  477. COPIES
  478. LINKNAME
  479. COPIES(Zeichenkette,Anzahl)
  480. LINKTEXT
  481. Gibt NUM als Ergebnis zur
  482. wenn Zeichenkette eine g
  483. ltige 
  484. Zahl ist, ansonsten CHAR.
  485. Wird ein Typ angegeben, dann 
  486. kann auf diesen Typ gepr
  487. werden. Ergebnis ist in diesem 
  488. Fall 0 oder 1.
  489. Folgende Typen gibt's:
  490. Alphanumeric A-Z, a-z, 0-9
  491. Binary       Bin
  492. r-String
  493. Lowercase    a-z
  494. Mixed        A-Z, a-z
  495. Upper        A-Z
  496. Numeric      Zahl
  497. Symbol       ARexx-Symbol
  498. Whole        ganze Zahl
  499. X            Hexadezimalstring
  500. DATATYPE
  501. LINKNAME
  502. DATATYPE(Zeichenkette[,Typ])
  503. LINKTEXT
  504. Diese Funktion schneidet von 
  505. Zeichenkette alles ab dem Buch-
  506. staben mit der Nummer ab, die in
  507. Pos angegeben ist. Wird L
  508. nge mit 
  509. angegeben, so wird ab Pos ein 
  510. Teilstring "herausgeschnitten".
  511. DELSTR
  512. LINKNAME
  513.  DELSTR(Zeichenkette,Pos[,L
  514. nge])
  515. LINKTEXT
  516. hnlich wie DELSTR, nur geht's 
  517. hier um ganze W
  518. rter.
  519. DELWORD
  520. LINKNAME
  521. #DELWORD(Zeichenkette, Pos[,Anzahl])
  522. LINKTEXT
  523. Gibt die Anfangsposition der 
  524. Worte in der Zeichenkette zur
  525. 0, wenn nicht gefunden.
  526. ECHO FIND("Heiko Kuschel"
  527.            , "Kuschel")
  528. LINKNAME
  529. FIND(Zeichenkette,Worte)
  530. LINKTEXT
  531. Sucht nach dem ersten Auftreten 
  532. von Muster in Zeichenkette und 
  533. gibt die Position aus. 0, wenn 
  534. nicht gefunden. 
  535. Eine Startposition kann auch 
  536. angegeben werden.
  537. Gleichbedeutend damit ist POS(). 
  538. INDEX() existiert allerdings nur
  539. auf der Amiga-Version von REXX.
  540. INDEX
  541. LINKNAME
  542. "INDEX(Zeichenkette,Muster[,Start])
  543. LINKTEXT
  544. gt den Quellstring ab der 
  545. Startposition in den Zielstring 
  546. ein. 
  547. Wenn eine L
  548. nge angegeben ist, 
  549. kann sie auch mit F
  550. llzeichen 
  551. erreicht werden.
  552. ECHO INSERT("ARexx-Kurs "
  553. ,"Ein ist eine klasse Sache",4)
  554. EIN AREXX-KURS IST EINE KLASSE 
  555. SACHE
  556. Vorsicht: Die F
  557. llzeichen werden 
  558. an den Quellstring angeh
  559. ECHO INSERT("ARexx-Kurs "
  560. ,"Ein ist eine klasse Sache"
  561. ,4,30,"!")
  562. EIN AREXX-KURS !!!!!!!!!!!!!!!!!
  563. !!IST EINE KLASSE SACHE
  564. INSERT
  565. LINKNAME
  566. 8INSERT(Quellstring,Zielstring[,Start,L
  567. nge,F
  568. llzeichen])
  569. LINKTEXT
  570. (Wie POS() bzw. INDEX(), nur von 
  571. hinten.
  572. LASTPOS
  573. LINKNAME
  574. %LASTPOS(Muster, Zeichenkette[,Start])
  575. LINKTEXT
  576. Gibt den linken Teil der Zeichen-
  577. kette zur
  578. ck, abh
  579. ngig von dem 
  580. nge stehenden Wert. 
  581. Evtl. kann mit F
  582. llzeichen aufge-
  583. llt werden, falls die Zeichen-
  584. kette k
  585. rzer ist als die Zahl, 
  586. die in L
  587. nge steht.
  588. LINKNAME
  589. &LEFT(Zeichenkette,L
  590. nge[,F
  591. llzeichen])
  592. LINKNAME
  593. LENGTH(Zeichenkette)
  594. LENGTH
  595. LINKTEXT
  596. !Gibt die L
  597. nge in Zeichen 
  598. LINKNAME
  599. /OVERLAY(Quelle, Ziel[,Start,L
  600. nge,F
  601. llzeichen])
  602. OVERLAY
  603. LINKTEXT
  604. Damit wird eine Zeichenkette 
  605. ber eine andere gelegt. Im 
  606. Gegensatz zu INSERT() geht 
  607. dabei ein Teil des Zielstrings 
  608. verloren. Das entspricht so 
  609. ungef
  610. hr dem 
  611. berschreib-Modus 
  612. in einem Editor oder einer 
  613. Textverarbeitung.
  614. LINKNAME
  615. POS()
  616. LINKTEXT
  617. ist gleichbedeutend mit INDEX()
  618. LINKNAME
  619. REVERSE(Zeichenkette)
  620. REVERSE
  621. LINKTEXT
  622. 1Dreht die Zeichenkette um. 
  623. Aus ARexx wird xxeRA.
  624. LINKNAME
  625. 'RIGHT(Zeichenkette,L
  626. nge[,F
  627. llzeichen])
  628. RIGHT
  629. LINKTEXT
  630. 8Wie LEFT(), nur da
  631.  der rechte 
  632. Teil abgeschnitten wird.
  633. LINKNAME
  634. 'SPACE(Zeichenkette, Zahl[,F
  635. llzeichen])
  636. SPACE
  637. LINKTEXT
  638. zDamit k
  639. nnen zwischen einzelnen 
  640. rtern im String beliebig viele
  641. Leerzeichen (oder andere 
  642. llzeichen) eingef
  643. gt werden.
  644. LINKNAME
  645. #STRIP(Zeichenkette[,B|L|T,Zeichen])
  646. STRIP
  647. LINKTEXT
  648. Leerzeichen entfernen.
  649. Optional k
  650. nnen auch nur die 
  651. vorangestellten oder nach-
  652. folgenden (Leer-) Zeichen 
  653. entfernt werden.
  654. L steht f
  655. r Leading 
  656.   (vorangestellte)
  657. T steht f
  658. r Trailing 
  659.   (nachgestellte)
  660. B steht f
  661. r Both 
  662.   (beides) und ist voreingestellt.
  663. LINKNAME
  664. .SUBSTR(Zeichenkette,Start[,L
  665. nge,F
  666. llzeichen])
  667. SUBSTR
  668. LINKTEXT
  669. Damit kann ein Teilstring aus 
  670. einer Zeichenkette 
  671. bernommen 
  672. werden, und zwar ab Position 
  673. Start, optional mit angegebener 
  674. nge und F
  675. llzeichen.
  676. LINKNAME
  677. $SUBWORD(Zeichenkette,Start[,Anzahl])
  678. SUBWORD
  679. LINKTEXT
  680. hnlich wie SUBSTR(), nur mit 
  681. ganzen W
  682. rtern.
  683. LINKNAME
  684. /TRANSLATE(Zeichenkette[,rein,raus,F
  685. llzeichen])
  686.     TRANSLATE
  687. LINKTEXT
  688. Leider kann dieser Befehl nichts 
  689. in andere Sprachen 
  690. bersetzen... 
  691. aber praktisch kann er trotzdem 
  692. sein.
  693. Er vergleicht die in raus 
  694. angegebenen Zeichen mit der
  695. Zeichenkette. 
  696. Findet er eines, ersetzt er es 
  697. durch das Zeichen, das in rein 
  698. an gleicher Stelle angegeben ist. 
  699. Ist rein daf
  700. r zu kurz, nimmt er 
  701. ein Leerzeichen oder das optional
  702. angegebene F
  703. llzeichen. Hmmmh! 
  704. Kapiert? Vielleicht einmal ein 
  705. Beispiel:
  706. ECHO TRANSLATE("Hioku Kaschil"
  707. ,"aeiou","eioua")
  708. HEIKO KUSCHEL
  709. ECHO TRANSLATE("Amiga 1200"
  710. ,"60","12")
  711. AMIGA 6000
  712. LINKNAME
  713. TRIM(Zeichenkette)
  714. LINKTEXT
  715. >Entfernt alle nachgestellten 
  716. Leerzeichen in der Zeichenkette.
  717. LINKNAME
  718. UPPER(Zeichenkette)
  719. UPPER
  720. LINKTEXT
  721. _Wandelt alles in GROSSBUCHSTABEN
  722. um. Als ob ARexx das nicht 
  723. sowieso schon dauernd tun w
  724. rde...
  725. LINKNAME
  726. .VERIFY(Zeichenkette,Liste[,M|N,Startposition])
  727. VERIFY
  728. LINKTEXT
  729. berpr
  730. ft,ob die Zeichenkette 
  731. nur Zeichen aus der Liste 
  732. Wenn ja, ist das Ergebnis 0, 
  733. ansonsten die erste Position,
  734. an der ein fremdes Zeichen 
  735. gefunden wurde. 
  736. Durch Angabe einer Startposition
  737. r die Suche kann man dann auch 
  738. weiter hinten stehende "falsche"
  739. Zeichen finden.
  740. N steht f
  741. r NOMATCH und ist 
  742.   voreingestellt, d.h., es 
  743.   wird nach Zeichen gesucht, 
  744.   die *nicht* vorkommen.
  745. M (MATCH) wird dann nach 
  746.   Zeichen gesucht, die in 
  747.   der Zeichenkette vorkommen.
  748. LINKNAME
  749. WORD(Zeichenkette,x)
  750. LINKTEXT
  751. }Gibt das x-te Wort aus der 
  752. Zeichenkette aus, oder eine 
  753. leere Zeichenkette, wenn so 
  754. viele W
  755. rter gar nicht 
  756. vorhanden sind.
  757. LINKNAME
  758. WORDINDEX(Zeichenkette,Zahl)
  759.     WORDINDEX
  760. LINKTEXT
  761. Gibt die Position in Zeichen aus,
  762. an der das x-te Wort steht.
  763. ECHO WORDINDEX("Das ist ein 
  764. kleines Beispiel",4)
  765. Das hei
  766. t: Das vierte Wort 
  767. beginnt mit dem 13. Buchstaben.
  768. LINKNAME
  769. WORDLENGTH(Zeichenkette,Zahl)
  770. WORDLENGTH
  771. LINKTEXT
  772. iGibt die L
  773. nge des an Nummer 
  774. Zahl stehenden Wortes zur
  775. oder 0, wenn es nicht so viele 
  776. rter gibt.
  777. LINKNAME
  778. WORDS(Zeichenkette)
  779. WORDS
  780. LINKTEXT
  781. )Liefert nat
  782. rlich die Anzahl 
  783. der W
  784. rter.
  785. LINKNAME
  786. XRANGE([Start,Ende])
  787. XRANGE
  788. LINKTEXT
  789. iLiefert eine Zeichenkette, die
  790. alle ASCII-Codes von Start bis
  791. Ende enth
  792. Voreingestellt ist 0 bis 255.
  793. GUIDE
  794. LINKTEXT
  795. Gibt den absoluten Wert einer 
  796. Zahl zur
  797. ck. V
  798. llig unmathema-
  799. tisch ausgedr
  800. ckt: Entfernt das 
  801. Minuszeichen vor der Zahl, wenn 
  802. eins vorhanden ist.
  803. LINKNAME
  804.     ABS(Zahl)
  805. LINKTEXT
  806. DDiese Funktion liefert die 
  807. gerade eingestellten Werte 
  808. r NUMERIC
  809. DIGITS
  810. LINKNAME
  811. DIGITS()
  812. LINKTEXT
  813. DDiese Funktion liefert die 
  814. gerade eingestellten Werte 
  815. r NUMERIC
  816. LINKNAME
  817. FROM()
  818. LINKTEXT
  819. DDiese Funktion liefert die 
  820. gerade eingestellten Werte 
  821. r NUMERIC
  822. LINKNAME
  823. FUZZ()
  824. LINKTEXT
  825. Wie RANDOM(), nur da
  826.  der 
  827. ckgabewert immer zwischen 0 
  828. und 1 liegt. Die Zahl der 
  829. Nachkommastellen wird mit
  830. NUMERIC DIGITS bestimmt (s.u.).
  831. RANDU
  832. LINKNAME
  833. RANDU([Startwert])
  834. LINKTEXT
  835. .liefert das Vorzeichen der 
  836. Zahl oder 0 f
  837. LINKNAME
  838. SIGN(Zahl)
  839. LINKTEXT
  840. Schneidet die Nachkommastellen 
  841. ab (rundet nicht!). Optional 
  842. kann eine Anzahl von Nachkomma-
  843. stellen angegeben werden.
  844. Gebraucht wird hier noch der 
  845. NUMERIC-Befehl, der zum 
  846. besseren Verst
  847. ndnis auf-
  848. gerufen werden sollte. 
  849. TRUNC
  850. LINKNAME
  851. TRUNC(Zahl[,Stellen])
  852. LINKTEXT
  853. /    NUMERIC DIGITS Zahl
  854. Stellt ein, wie viele Stellen bei
  855. einer numerischen Operation           
  856. signifikant sind (1-14).
  857. Ist die Zahl l
  858. nger, wird die 
  859. Exponentialschreibweise 
  860. verwendet, z.B.   2.122E+3
  861.      NUMERIC FUZZ Zahl
  862. Stellt ein, wie viele Stellen 
  863. (von rechts) bei Vergleichs-
  864. operationen *nicht* ber
  865. cksicht-
  866. igt werden sollen.
  867.      NUMERIC FORM 
  868.       (Scientific|Engineering)
  869. Stellt die Form der Exponential-
  870. schreibweise ein. Da gibt es 
  871. einen Unterschied zwischen 
  872. akademischer und Ingenieurs-
  873. schreibweise, der mir allerdings
  874. nicht klar ist.
  875. NUMERIC
  876. LINKNAME
  877. NUMERIC DIGITS Zahl
  878. LINKTEXT
  879. Bergibt eine UND-Verkn
  880. pfung der 
  881. Bit-Strings. Die Funktion arbeitet
  882. nicht korrekt, wenn die Strings
  883. unterschiedlich lang sind, da 
  884. dann mit Leerzeichen aufgef
  885. wird! Dann mu
  886.  das richtige 
  887. llzeichen gew
  888. hlt werden, was 
  889. auch nicht ganz problemlos ist.
  890. ECHO C2B(BITAND("01010001"b
  891. ,"11101110"b))
  892. 01000000
  893. Was bedeutet UND-, ODER- etc. 
  894. Verkn
  895. pfung?
  896. Ganz einfach: zwei Bits 
  897. (also einzelne Speicherstellen) 
  898. werden miteinander verglichen, 
  899. und abh
  900. ngig von ihrem Zustand 
  901. (0 oder 1) kommt es zu einem
  902. Ergebnis.
  903. Das geht nach folgender Tabelle:
  904. Bit 1 | 0  1  0  1 |Vergleich
  905. Bit 2 | 0  0  1  1 |
  906. ______|____________|_________
  907. UND   | 0  0  0  1 |Ergebnis
  908. ODER  | 0  1  1  1 |
  909. XODER | 0  1  1  0 |
  910. rzahlen werden in ARexx 
  911. folgenderma
  912. en geschrieben: 
  913. "00010000"b
  914. Leerzeichen d
  915. rfen nur an 
  916. den Byte-Grenzen eingef
  917. werden!
  918. BITAND
  919. LINKNAME
  920. %BITAND(BitStr1[,BitStr2,F
  921. llzeichen])
  922. LINKTEXT
  923. Invertiert das Bit an der 
  924. angegebenen Stelle. 
  925. hlt werden die Bits von
  926. rechts nach links!
  927. rzahlen werden in ARexx 
  928. folgenderma
  929. en geschrieben: 
  930. "00010000"b
  931. Leerzeichen d
  932. rfen nur an 
  933. den Byte-Grenzen eingef
  934. werden!
  935. BITCHG
  936. LINKNAME
  937. BITCHG(BitString,Bit)
  938. LINKTEXT
  939. scht das angegebene Bit.
  940. rzahlen werden in ARexx 
  941. folgenderma
  942. en geschrieben: 
  943. "00010000"b
  944. Leerzeichen d
  945. rfen nur an 
  946. den Byte-Grenzen eingef
  947. werden!
  948. BITCLR
  949. LINKNAME
  950. BITCLR(BitString,Bit)
  951. LINKTEXT
  952. kVergleicht die beiden Bitstrings 
  953. und liefert 0, wenn sie gleich 
  954. sind,ansonsten die erste Position,
  955. an der sie sich unterscheiden. 
  956. Sind die Strings nicht gleich 
  957. lang, wird der k
  958. rzere am linken
  959. Ende mit F
  960. llzeichen
  961. aufgef
  962. rzahlen werden in ARexx 
  963. folgenderma
  964. en geschrieben: 
  965. "00010000"b
  966. Leerzeichen d
  967. rfen nur an 
  968. den Byte-Grenzen eingef
  969. werden!
  970. BITCOMP
  971. LINKNAME
  972. &BITCOMP(BitStr1,Bitstr2[,F
  973. llzeichen])
  974. LINKTEXT
  975. ergibt eine ODER-Verkn
  976. pfung der 
  977. Bit-Strings. 
  978. Ansonsten wie bei BITAND().
  979. rzahlen werden in ARexx 
  980. folgenderma
  981. en geschrieben: 
  982. "00010000"b
  983. Leerzeichen d
  984. rfen nur an 
  985. den Byte-Grenzen eingef
  986. werden!
  987. BITOR
  988. LINKNAME
  989. $BITOR(BitStr1[,BitStr2,F
  990. llzeichen])
  991. LINKTEXT
  992. Setzt das angegebene Bit auf 1.
  993. rzahlen werden in ARexx 
  994. folgenderma
  995. en geschrieben: 
  996. "00010000"b
  997. Leerzeichen d
  998. rfen nur an 
  999. den Byte-Grenzen eingef
  1000. werden!
  1001. BITSET
  1002. LINKNAME
  1003. BITSET(BitString,Bit)
  1004. LINKTEXT
  1005. Testet, ob das angegebene Bit 
  1006. gesetzt ist.
  1007. Liefert 1, wenn ja, sonst 0.
  1008. rzahlen werden in ARexx 
  1009. folgenderma
  1010. en geschrieben: 
  1011. "00010000"b
  1012. Leerzeichen d
  1013. rfen nur an 
  1014. den Byte-Grenzen eingef
  1015. werden!
  1016. BITTST
  1017. LINKNAME
  1018. BITTST(BitString,Bit)
  1019. LINKTEXT
  1020. ergibt eine Exklusiv-ODER-
  1021. Verkn
  1022. pfung der Bit-Strings. 
  1023. Ansonsten wie bei BITAND(). 
  1024. rzahlen werden in ARexx 
  1025. folgenderma
  1026. en geschrieben: 
  1027. "00010000"b
  1028. Leerzeichen d
  1029. rfen nur an 
  1030. den Byte-Grenzen eingef
  1031. werden!
  1032. BITXOR
  1033. LINKNAME
  1034. %BITXOR(BitStr1[,BitStr2,F
  1035. llzeichen])
  1036. LINKTEXT
  1037. Allgemeinerkl
  1038. rung zum Konver-
  1039. tieren! 
  1040. Zahlen in Zeichenketten 
  1041. verwandeln usw.
  1042. r gibt es in ARexx ein sehr 
  1043. einfaches System von Funktionen:
  1044. Jede "Art" von Zeichen hat einen 
  1045. Buchstaben:
  1046. B - Bin
  1047. C - Character (Buchstaben)
  1048. D - Dezimal
  1049. X - hexadezimal
  1050. ... und "2" steht im Englischen 
  1051. manchmal f
  1052. r "to", weil's genauso 
  1053. ausgesprochen wird.
  1054. Also:
  1055. ECHO B2C("00100010 01101001")
  1056. Gibt die Zeichen aus, die im 
  1057. ASCII-Code den hier angegebenen 
  1058. rzahlen entsprechen.
  1059. LINKNAME
  1060. B2C()
  1061. LINKTEXT
  1062. siehe unter B2C() 
  1063. LINKNAME
  1064. C2B()
  1065. LINKTEXT
  1066. siehe unter B2C()  
  1067. Bei C2D darf die Zeichenkette, 
  1068. bergeben wird, maximal 4 
  1069. Zeichen enthalten. 
  1070. Sie darf auch ein Hex-String, 
  1071. z.B. "FFFF"x oder ein Bin
  1072. string, z.B. "0011"b sein.
  1073. Optional kann bei C2D() ein 
  1074. Argument angegeben werden:
  1075. C2D("FFFF"x,2)
  1076. In diesem Fall wird der Bin
  1077. rwert
  1078. der Zeichenkette als Zweier-
  1079. komplement von 2 Bytes L
  1080. behandelt. So kann man auch 
  1081. vorzeichenbehaftete Zahlen 
  1082. erzeugen.
  1083. LINKNAME
  1084. C2D()
  1085. LINKTEXT
  1086. siehe unter B2C()  
  1087. LINKNAME
  1088. C2X()
  1089. LINKTEXT
  1090. siehe unter B2C()  
  1091. Bei D2C kann ebenfalls ein 
  1092. tzlicher Wert angegeben 
  1093. werden. Er bewirkt, da
  1094.  das 
  1095. Ergebnis die entsprechende 
  1096. nge hat und entweder links
  1097. abgeschnitten oder mit "00"x 
  1098. aufgef
  1099. llt wird.
  1100. LINKNAME
  1101. D2C(Zahl[,Bytes])
  1102. LINKTEXT
  1103. siehe unter B2C()  
  1104. Bei D2X() und X2D() kann die 
  1105. Zahl von Nibbles (4 Bits, also 
  1106. 2 Nibbles= 1 Byte) angegeben 
  1107. werden, damit auch negative 
  1108. Zahlen dargestellt werden k
  1109. nnen.
  1110. ECHO X2D("FFE0",4)
  1111. ECHO X2D("FFE0",6)
  1112. 65504
  1113. ECHO X2D("FFE0")
  1114. 65504
  1115. LINKNAME
  1116. D2X()
  1117. LINKTEXT
  1118. siehe unter B2C()  
  1119. LINKNAME
  1120. X2C()
  1121. LINKTEXT
  1122. siehe unter B2C()  
  1123. Bei D2X() und X2D() kann die 
  1124. Zahl von Nibbles (4 Bits, also 
  1125. 2 Nibbles= 1 Byte) angegeben 
  1126. werden, damit auch negative 
  1127. Zahlen dargestellt werden k
  1128. nnen.
  1129. ECHO X2D("FFE0",4)
  1130. ECHO X2D("FFE0",6)
  1131. 65504
  1132. ECHO X2D("FFE0")
  1133. 65504
  1134. LINKNAME
  1135. X2D()
  1136. LINKTEXT
  1137. Liefert eine Zufallszahl, option-
  1138. al kann eine kleinste und gr
  1139. Zahl angegeben werden. Als vorein-
  1140. gestellter Startwert wird die Sys-
  1141. temzeit verwendet. 
  1142. Wenn man immer die gleiche Abfol-
  1143. ge von Zufallszahlen haben will,
  1144. ist ein Startwert anzugeben, der 
  1145. statt der Systemzeit verwendet
  1146. wird.
  1147. Anmerkung: Zufallszahlen zu er-
  1148. zeugen, ist mit einem Computer 
  1149. praktisch unm
  1150. glich. Denn ein 
  1151. Computer arbeitet mit mathema-
  1152. tischen Formeln, und deren Er-
  1153. gebnis ist immer gleich. 
  1154.  Deshalb nimmt man eine Formel,
  1155. bei der die n
  1156. chste Zahl nicht
  1157. so ohne weiteres vorhersehbar 
  1158. ist und bei der die Ergebnisse
  1159. halbwegs gleichm
  1160. ber alle 
  1161. Zahlen verteilt sind, und f
  1162. ttert
  1163. sie mit einem Startwert, der weit-
  1164. gehend zuf
  1165. llig ist,n
  1166. mlich der 
  1167. Systemzeit zum Zeitpunkt des 
  1168. ersten Aufrufs dieser Funktion. 
  1169.  Wird dagegen immer der gleiche
  1170. Startwert genommen, kommt auch
  1171. immer die gleiche Folge von 
  1172. Zahlen heraus. Auch das kann 
  1173. tzlich sein, wenn man einen
  1174. immer gleichen Ablauf haben will.
  1175. RANDOM
  1176. LINKNAME
  1177. RANDOM([MIN,MAX,STARTWERT])
  1178. GUIDE
  1179. LINKTEXT
  1180. Siehe unter IF
  1181. LINKNAME
  1182. LINKTEXT
  1183. WHILE...END
  1184. DO WHILE Eingabe ~="Ende"
  1185. Durchl
  1186. uft die Schleife, 
  1187. solange die Variable Eingabe 
  1188. nicht den Wert Ende erh
  1189. Die Tilde ist das Negations-
  1190. zeichen in ARexx.
  1191. ~= bedeutet also so viel wie 
  1192. "nicht gleich".
  1193. WHILE
  1194. LINKNAME
  1195. WHILE...END
  1196. LINKTEXT
  1197. lUNTIL...END
  1198. DO UNTIL Eingabe="Ende"
  1199. Durchl
  1200. uft die Schleife, bis 
  1201. die Variable Eingabe den Wert
  1202. Ende erh
  1203. UNTIL
  1204. LINKNAME
  1205. UNTIL...END
  1206. LINKTEXT
  1207. ~Mit LEAVE kann die Schleife 
  1208. vorzeitig verlassen werden. 
  1209. Besonders wichtig bei DO FOREVER
  1210. ... unter IF gibt es ein 
  1211. Beispiel.
  1212. LEAVE
  1213. LINKNAME
  1214. LEAVE
  1215. LINKTEXT
  1216. Siehe unter IF
  1217. LINKNAME
  1218. LINKTEXT
  1219. )IF... THEN (...ELSE)
  1220. Bedingungsabfrage per IF!
  1221. Eine M
  1222. glichkeit, Schleifen zu 
  1223. programmieren mittels
  1224.        DO FOREVER:
  1225. Um hier eine Abfrage machen zu 
  1226. nnen, braucht man einen Befehl,
  1227. der ARexx etwas in der Art mit-
  1228. teilen k
  1229. nnen:
  1230. "Wenn Eingabe gleich "Ende" ist,
  1231. dann verlasse bitte die Schleife.
  1232. Und wenn nicht, dann gib die 
  1233. Eingabe aus."
  1234. Dieser Befehl hei
  1235. t sinnvoller-
  1236. weise IF... THEN (...ELSE)
  1237. Nach dem THEN darf allerdings
  1238. nur ein einziger Befehl stehen!
  1239. Wie soll man das anstellen? 
  1240. Oft genug mu
  1241.  nach so einer Ab-
  1242. frage doch eine ganze Menge im 
  1243. Programm geregelt werden.
  1244. Ganz einfach: 
  1245. "Der Abschnitt zwischen DO
  1246. und END wird intern wie ein 
  1247. einziger Befehl behandelt."
  1248. Also:
  1249. Wenn nach dem THEN mehrere 
  1250. Befehle folgen sollen, mu
  1251. dem ersten Befehl ein DO und
  1252. nach dem letzten dieser Befehle
  1253. ein END stehen.
  1254. DO FOREVER
  1255.   ECHO "Gib Ende f
  1256. r Quit ein"
  1257.   PARSE PULL Eingabe
  1258.   IF Eingabe="Ende" THEN DO
  1259.     ECHO "Die Eingabe war
  1260.            richtig "||Eingabe
  1261.     LEAVE
  1262.   END
  1263.   ELSE DO
  1264.     ECHO "Die Eingabe war 
  1265.           falsch "||Eingabe
  1266.   END
  1267. LINKNAME
  1268. IF... THEN (...ELSE)
  1269. LINKTEXT
  1270. FOREVER...END
  1271. DO FOREVER ist, denke ich, 
  1272. ziemlich klar...
  1273. Die Schleife l
  1274. uft bis unendlich
  1275. und kann mittels    LEAVE 
  1276. abgebrochen werden. 
  1277. Unter IF gibt es ein Beispiel! 
  1278. FOREVER
  1279. LINKNAME
  1280. FOREVER...END
  1281. LINKTEXT
  1282. cDO...END
  1283. Wiederholung eines oder meherer
  1284. Befehls-e in der Do...End 
  1285. Struktur (Schleife).
  1286. DO steht jeweils am Anfang einer
  1287. Gruppe von Befehlen, END am Ende,
  1288. wie der Name schon sagt. 
  1289. Dabei kann DO noch eine ganze 
  1290. Reihe von Bedingungen mitgegeben
  1291. werden. Das sieht dann folgender-
  1292. en aus:
  1293. DO (Bedingungen)
  1294.     ARexx-Befehle
  1295. Dieser Abschnitt zwischen DO 
  1296. und END wird intern wie ein 
  1297. einziger Befehl behandelt.
  1298. Folgende Bedingungen k
  1299. nnen 
  1300. dem Befehl DO mitgegeben werden 
  1301. (es ist jedesmal gleich ein 
  1302. Beispiel dazugenommen):
  1303. DO Zaehler=1 TO 10 BY 2 FOR 3
  1304. Die Variable Zaehler wird auf 
  1305. den Wert 1 gesetzt und die 
  1306. Schleife durchlaufen.
  1307. Am Ende wird sie um 2 erh
  1308. und die Schleife erneut durch-
  1309. laufen, usw., bis der Wert 10 
  1310. erreicht ist. Mit FOR kann die
  1311. maximale Anzahl der Durchl
  1312. festgelegt werden, auch wenn 
  1313. der Endwert noch nicht erreicht
  1314. LINKNAME
  1315. DO...End
  1316. LINKTEXT
  1317. Gibt den Inhalt einer Variablen
  1318. ck. Das ist dann n
  1319. tig, wenn
  1320. der Variablenname selbst eine 
  1321. Variable ist:
  1322. a="Hoppla, ist das kompliziert"
  1323. b="a"
  1324. SAY VALUE(a)
  1325. SAY VALUE("a")
  1326. SAY VALUE(b)
  1327. VALUE
  1328. LINKNAME
  1329. VALUE(Name)
  1330. LINKTEXT
  1331. [Gibt die aktuelle Trace-Einstel-
  1332. lung zur
  1333. ck oder 
  1334. ndert je nach 
  1335. Option diese Einstellung.
  1336. TRACE
  1337. LINKNAME
  1338. TRACE(Option)
  1339. LINKTEXT
  1340. hnlich wie DATE(), nur f
  1341. r die
  1342. Uhrzeit. Folgende Optionen gibt 
  1343. Civil     [h]h:mmxx (xx meint am
  1344.            oder pm)
  1345. Elapsed   Sekunden und Hundert-
  1346.           stelsekunden seit der 
  1347.           letzten Abfrage
  1348. Hours     Stunden seit Mitter-
  1349.           nacht
  1350. Minutes   Minuten seit Mitter-
  1351.           nacht
  1352. Normal    hh:mm:ss
  1353. Reset     wie Elapsed, l
  1354. scht 
  1355.           aber danach den Timer.
  1356. Seconds   Sekunden seit Mitter-
  1357.           nacht
  1358. LINKNAME
  1359. TIME([Option])
  1360. LINKTEXT
  1361. Damit kann getestet werden, ob 
  1362. es sich bei Name um ein g
  1363. ltiges 
  1364. ARexx-Symbol (z.B. eine Variable) 
  1365. handelt. Folgende R
  1366. ckgabewerte 
  1367. sind m
  1368. glich:
  1369. BAD     war nichts: kein ARexx-
  1370.         Symbol.
  1371. LIT     es handelt sich um ein 
  1372.         uninitialisiertes Symbol
  1373.         (eine Variable, der noch 
  1374.          kein Wert zugewiesen 
  1375.          wurde).
  1376. VAR     Eine Variable, der ein 
  1377.         Wert zugewiesen wurde.
  1378. SYMBOL
  1379. LINKNAME
  1380. SYMBOL(Name)
  1381. LINKTEXT
  1382. Schreibt den angegebenen String 
  1383. direkt in den Speicher. Ganz 
  1384. ohne Parameter 
  1385. bergibt die 
  1386. Funktion den freien System-
  1387. speicher.
  1388. STORAGE
  1389. LINKNAME
  1390. ,STORAGE(Addresse[,String,L
  1391. nge,F
  1392. llzeichen])
  1393. LINKTEXT
  1394. Liefert ohne Wertangabe die Zahl
  1395. aller Zeilen im aktuellen Skript.
  1396. Mit Angabe einer Nummer liefert 
  1397. es einen String, in dem die Zeile
  1398. mit der entsprechenden Nummer 
  1399. steht.
  1400. SOURCELINE
  1401. LINKNAME
  1402. SOURCELINE([Zeile])
  1403. LINKTEXT
  1404. Setzt einen Eintrag in der 
  1405. Clipliste. Ohne Angabe eines 
  1406. Wertes wird der Eintrag 
  1407. scht. Der R
  1408. ckgabewert ist 
  1409. boolsch (0 oder 1).
  1410. SETCLIP
  1411. LINKNAME
  1412. SETCLIP(Name[,Wert])
  1413. LINKTEXT
  1414. Entfernt eine Library wieder.
  1415. REMLIB
  1416. LINKNAME
  1417. REMLIB()
  1418. LINKTEXT
  1419. SDamit kann man einige Einstel-
  1420. lungen des Programms ver
  1421. ndern 
  1422. bzw. abfragen. 
  1423. Folgende Optionen sind m
  1424. glich 
  1425. (es reicht wieder die Angabe 
  1426. des ersten Buchstabens):
  1427.  Directory  gibt das aktuelle 
  1428.             Verzeichnis des 
  1429.             Programms zur
  1430.  ID         Zeiger auf die 
  1431.             TaskControlBlock-
  1432.             Struktur
  1433.  Priority   Damit kann dem 
  1434.             Proze
  1435.  eine andere 
  1436.             TaskPriority gegeben
  1437.             werden.
  1438.             Vorsicht: REXXMAST 
  1439.             hat 4! Nicht h
  1440.             gehen!
  1441.             Werte zwischen -128
  1442.             und 127 sind 
  1443.             theoretisch m
  1444. glich,
  1445.             normal ist der 
  1446.             Bereich von etwa -5 
  1447.             bis +3.
  1448.  Window     Damit kann der 
  1449.             WindowPointer des 
  1450.             Tasks ver
  1451. ndert 
  1452.             werden. F
  1453. r "Wert" 
  1454.             k
  1455. nnen die 
  1456.             Schl
  1457. sselworte "Null"
  1458.             oder "Workbench"        
  1459.             stehen.
  1460.  *          Der in Wert 
  1461.             angegebene logische 
  1462.             Name wird als 
  1463.             aktueller *-      
  1464.             Console-Handler 
  1465.             eingestellt.
  1466. PRAGMA
  1467. LINKNAME
  1468. PRAGMA(Option[,Wert])
  1469. LINKTEXT
  1470. gLiest Daten aus einem Speicher-
  1471. bereich. Ohne Angabe einer L
  1472. wird bis zum n
  1473. chsten "00"x ge-
  1474. lesen.
  1475. IMPORT
  1476. LINKNAME
  1477. IMPORT(Adresse[,L
  1478. nge])
  1479. LINKTEXT
  1480. Gibt den Hashwert des 
  1481. bergebenen
  1482. Strings zur
  1483. Das ist so eine Art Pr
  1484. fsumme: 
  1485. Alle ASCII-Werte werden addiert,
  1486. und das unterste Byte der Summe
  1487. ckgegeben.
  1488. LINKNAME
  1489. HASH(String)
  1490. LINKTEXT
  1491. ;Gibt einen Zeiger auf einen 
  1492. freien Speicherbereich zur
  1493. GETSPACE
  1494. LINKNAME
  1495. GETSPACE(L
  1496. LINKTEXT
  1497. *Liest eine Zeichenkette aus dem
  1498. Clipboard.
  1499. GETCLIP
  1500. LINKNAME
  1501. GETCLIP(Name)
  1502. LINKTEXT
  1503. wGibt die mit GETSPACE reservier-
  1504. ten Speicherbereiche wieder frei. 
  1505. Bei Verwendung der Argumente 
  1506. arbeitet die Funktion nicht ganz 
  1507. fehlerfrei. Sie wird am Ende des
  1508. Programms sowieso ausgef
  1509. hrt, 
  1510. also vielleicht einfach weglassen
  1511. wenn nicht gerade 180 MB Speicher
  1512. reserviert wurden. Und wenn, dann
  1513. besser ohne die Argumente, denn 
  1514. FREESPACE wei
  1515. , welcher Speicher
  1516. ihm geh
  1517.     FREESPACE
  1518. LINKNAME
  1519. FREESPACE([Addresse,L
  1520. nge])
  1521. LINKTEXT
  1522. Hiermit kann der Inhalt eines
  1523. Strings an eine 4-Byte-Adresse
  1524. geschrieben werden.
  1525. Der Speicher mu
  1526.  vorher reser-
  1527. viert werden!
  1528. (Siehe GETSPACE)
  1529. EXPORT
  1530. LINKNAME
  1531. +Export(Addresse[,String,L
  1532. nge,F
  1533. llzeichen])
  1534. LINKTEXT
  1535. WGibt eine kurze Beschreibung zu 
  1536. jeder Fehlernummer aus, die in 
  1537. ARexx auftreten kann.
  1538.     ERRORTEXT
  1539. LINKNAME
  1540. ERRORTEXT()
  1541. LINKTEXT
  1542. }Gibt die aktuelle Zeit als 
  1543. Zeichenkette zur
  1544. Diese kann weitgehend durch Op-
  1545. tionen ver
  1546. ndert werden. 
  1547. Diese M
  1548. glichkeiten gibt es, 
  1549. wobei T f
  1550. r Tag, M f
  1551. r Monat 
  1552. und J f
  1553. r Jahr steht:
  1554. Century      Tage seit Beginn 
  1555.              des Jahrhunderts
  1556. Days         Tage seit Beginn 
  1557.              des Jahres
  1558. European     TT/MM/JJ
  1559. Internal     Systemtage (seit 
  1560.              dem 1.1.1978)
  1561. Julian       JJTTT (Tage seit 
  1562.              Beginn des Jahres)
  1563. Month        englischer Monats-
  1564.              name
  1565. Normal       TT MMM JJJJ
  1566. Ordered      JJ/MM/TT
  1567. Sorted       JJJJMMTT
  1568. USA          MM/TT/JJ
  1569. Weekday      der Wochentag
  1570. Es reicht jeweils der erste 
  1571. Buchstabe als Angabe.
  1572. Durch Angabe des I oder S 
  1573. kann ein Datum, das im 
  1574. Internal- oder Sorted-
  1575. Format vorliegt, in jedes 
  1576. beliebige andere umgewandelt
  1577. werden:
  1578. SAY DATE("E",19960428,"S")
  1579. FOLGENDES BEISPIEL STAMMT VON
  1580. HEIKO KUSCHEL:
  1581. Ein kleines Programm, das ich 
  1582. einmal t
  1583. glich automatisch auf-
  1584. rufen lie
  1585.  und das mir den akt-
  1586. uellen Stand meiner Hausarbeit
  1587. auf die Diskette Hausarbeit_BAK:
  1588. kopierte, und zwar jedesmal in
  1589. ein neues Verzeichnis, das als 
  1590. Namen das aktuelle Datum hatte:
  1591. --------------------------------
  1592. /*Sicherheitskopie f
  1593.             Hausarbeit*/
  1594. Address Command
  1595. Datum=DATE("Sorted")
  1596. makedir "Hausarbeit_BAK:"Datum
  1597. copy "Text:BT-III/Texte/(Hausar
  1598. beit|Literaturverzeichnis).TXT 
  1599. Hausarbeit_BAK:"Datum
  1600. --------------------------------
  1601. LINKNAME
  1602. DATE(Option[,Datum,I|S])
  1603. LINKTEXT
  1604. Hiermit lassen sich externe 
  1605. Bibliotheken (Libraries) in 
  1606. ARexx einbinden, die weitere 
  1607. Befehle zur Verf
  1608. gung stellen. 
  1609. Solche Bibliotheken befinden 
  1610. sich normalerweise im Verzeich-
  1611. nis LIBS: und haben die Endung 
  1612. .library. 
  1613. r ARexx sind leider meistens 
  1614. spezielle Abwandlungen dieser 
  1615. Libraries n
  1616. tig. 
  1617. Im Aminet gibt es aber eine ganze
  1618. Reihe sehr guter Libraries, z.B. 
  1619. rexxtricks.library, 
  1620. rexxsupport.library, 
  1621. rexxreqtools.library 
  1622. und andere. 
  1623. Wie diese im einzelnen arbeiten,
  1624. kann ich hier kaum erkl
  1625. ren, 
  1626. das w
  1627. rde zu weit f
  1628. hren. 
  1629. Die Befehle, die die Libraries 
  1630. zur Verf
  1631. gung stellen, sind 
  1632. normalerweise gut dokumentiert. 
  1633. ARexx schaut dann bei Befehlen, 
  1634. die unbekannt sind, zun
  1635. chst 
  1636. einmal in den angemeldeten 
  1637. Bibliotheken nach, ob dort der 
  1638. entsprechende Befehl zu finden 
  1639. ist. Erst dann wird versucht, 
  1640. ber den ARexx-Port ein Prog-
  1641. ramm zu finden, das diesen Be-
  1642. fehl versteht.
  1643. Die Priorit
  1644. t gibt an, in welcher
  1645. Reihenfolge in den Bibliotheken 
  1646. gesucht werden soll. 
  1647. Hoher Wert meint zuerst suchen. 
  1648. ltig sind Werte zwischen 100
  1649. und -100. 
  1650. Offset ist die Einsprungadresse
  1651. r die QUERY-Funktion der Bib-
  1652. liothek. Ist normalerweise -30 
  1653. und mu
  1654.  angegeben werden, damit
  1655. alles funktioniert. 
  1656. Mit Version kann noch eine Ver-
  1657. sionsnummer der Bibliothek an-
  1658. gegeben werden. Ist die Version
  1659. der gefundenen Bibliothek klei-
  1660. ner, wird sie nicht akzeptiert.
  1661. Ein Beispiel, f
  1662. r das nat
  1663. lich die rexxreqtools.library 
  1664. installiert SEIN mu
  1665. --------------------------------
  1666. IF ~SHOW("L",rexxreqtools.
  1667.  library) THEN DO
  1668. CALL ADDLIB("rexxreqtools
  1669.  .library", 0, -30, 0)
  1670. gadtxt= "_Weiter|_Cancel"
  1671. Eingabe = rtgetstring(" "
  1672.  ,"Bitte einen Text eingeben:"
  1673.  ,"Hello World 1.8.",gadtxt)
  1674. KnopfGedr
  1675. ckt=rtresult
  1676. --------------------------------
  1677. ADDLIB
  1678. LINKNAME
  1679. 'ADDLIB(Name,Priorit
  1680. t[,Offset,Version])
  1681. LINKTEXT
  1682. ]Wenn nun abh
  1683. ngig von dem, was 
  1684. der Benutzer eingeben will, ver-
  1685. schiedene Dinge ausgef
  1686. hrt werden
  1687. sollen, dann kann man daf
  1688. r nat
  1689. lich lauter einzelne IF...THEN-
  1690. Abfragen machen. 
  1691. Aber was tun, wenn ich 20 solcher 
  1692. Abfragen habe, und als letztes 
  1693. will ich eine Aktion f
  1694. r alles,
  1695. was noch nicht extra abgefragt 
  1696. wurde?
  1697. Also z.B.: Wenn der Benutzer 
  1698. "ich" eingegeben hat, schreibe 
  1699. "Hallo Heiko!". 
  1700. Wenn der Benutzer "Schafkopf" 
  1701. eingegeben hat, schreibe "Wenz",
  1702. usw. Und wenn er gar nichts von 
  1703. den Sachen eingibt, sondern was 
  1704. ganz anderes, dann schreibe 
  1705. "Wie kreativ! :-)"
  1706. r gibt es den Befehl 
  1707. SELECT...END. Das schaut dann 
  1708. folgenderma
  1709. en aus:
  1710. --------------------------------
  1711. SELECT
  1712.  WHEN Eingabe="ich" THEN DO
  1713.   Erfolg=WRITELN(Fenster
  1714.               ,"Hallo Heiko!")
  1715.         END
  1716.    WHEN Eingabe=
  1717.            "Schafkopf" THEN DO
  1718.         Erfolg=WRITELN(Fenster
  1719.                      ,"Wenz!")
  1720.         END
  1721.     OTHERWISE DO
  1722.         Erfolg=WRITELN(Fenster
  1723.                ,"Wie kreativ!")
  1724.         END
  1725. --------------------------------
  1726. Die Angabe von OTHERWISE ist 
  1727. notwendig, sonst gibt's eine 
  1728. Fehlermeldung!
  1729. SELECT 
  1730. LINKNAME
  1731. SELECT 
  1732. LINKTEXT
  1733. re es nicht sch
  1734. n, wenn man 
  1735. sich bei der Erstellung der 
  1736. Unterprogramme nicht immer darum
  1737. mmern m
  1738. te, welche Variablen 
  1739. im Hauptprogramm oder in anderen
  1740. Unterprogrammen bereits verwendet
  1741. wurden? 
  1742. re dann z.B. sehr leicht 
  1743. glich, einzelne Programmteile 
  1744. in anderen Skripten wiederzuver-
  1745. werten, ohne irgend etwas daran 
  1746. ndern zu m
  1747. ssen. 
  1748. Und nat
  1749. rlich ist auch das m
  1750. lich. Neben der einfachen Form 
  1751. von Unterprogrammen, wie sie 
  1752. unter CALL (3.) beschrieben sind,
  1753. gibt es auch noch sogenannte Pro-
  1754. cedures, die v
  1755. llig unabh
  1756. ngig 
  1757. vom Hauptprogramm arbeiten. 
  1758. Variablen im Hauptprogramm werden
  1759. nicht ver
  1760. ndert, au
  1761. er man sagt 
  1762. es ausdr
  1763. cklich. 
  1764. So eine Procedure wird durch den 
  1765. Befehl PROCEDURE definiert. 
  1766. Sie endet mit dem Befehl RETURN,
  1767. bei dem noch angegeben werden 
  1768. kann, ob der Wert einer Variable
  1769. in RESULT abgelegt werden soll.
  1770. --------------------------------
  1771. /* Hello World Version 1.7.*/
  1772. CALL Fensteroeffnen
  1773. CALL FrageundAntwort
  1774. Fensteroeffnen:
  1775. Erfolg=OPEN(Fenster,'CON:20/20
  1776.            /620/100/Hello World 
  1777.            1.6./CLOSE',R)
  1778. IF ~Erfolg THEN ECHO "Fehler!"
  1779. RETURN
  1780. FrageundAntwort:
  1781. DO WHILE Result~="Ende"
  1782.   CALL Eingabefrage
  1783.   CALL Ausgabe
  1784. RETURN
  1785. Eingabefrage:
  1786.  Erfolg=WRITELN(Fenster,"Gib 
  1787.                 was ein!")
  1788. RETURN
  1789. Ausgabe: PROCEDURE
  1790.  Eingabe=READLN(Fenster)
  1791.  Erfolg=WRITELN(Fenster,"Du 
  1792.         hast "||Eingabe||" 
  1793.         eingegeben.")
  1794. RETURN Eingabe
  1795. --------------------------------
  1796. Die Variable Eingabe existiert 
  1797. nur noch in der Prozedur Ausgabe! 
  1798. Versucht einmal herauszufinden, 
  1799. was diese Variable innerhalb 
  1800. des Hauptprogramms f
  1801. r einen 
  1802. Wert enth
  1803. (Noch nicht benutzte Variablen 
  1804. enthalten ihren eigenen Namen 
  1805. in Gro
  1806. schrift... nur so als 
  1807. kleiner Hinweis.)
  1808. Hinter PROCEDURE kann man nun 
  1809. auch noch angeben, welche 
  1810. Variablen aus dem Hauptprogramm 
  1811. im Unterprogramm doch bekannt 
  1812. sein sollen.
  1813. Das sieht dann z.B. so aus:
  1814. Unterprogramm: 
  1815. PROCEDURE EXPOSE Variable 
  1816. Nocheine Unddiedritte 
  1817. Undsoweiter
  1818.     PROCEDURE
  1819. LINKNAME
  1820.     PROCEDURE
  1821. LINKTEXT
  1822. iDer Befehl EXIT beendet ein 
  1823. ARexx-Skript. 
  1824. Soll das Skript an das aufrufen-
  1825. de Programm einen Wert zur
  1826. ckge-
  1827. ben, kann man den auch definier-
  1828. en, z.B. EXIT 10. 
  1829. Wenn ein Skript einfach irgendwo
  1830. rt und kein Befehl mehr 
  1831. nachfolgt, sieht der Interpreter
  1832. das als EXIT 0 an. 
  1833. Der R
  1834. ckgabewert, der normaler-
  1835. weise f
  1836. r Fehlermeldungen benutzt
  1837. wird, ist dann 0.
  1838. LINKNAME
  1839. LINKTEXT
  1840. kann auf verschiedene Arten 
  1841. verwendet werden:
  1842. 1. Aufruf einer ARexx-Funktion. 
  1843. Das Ergebnis wird in RESULT 
  1844. abgelegt
  1845. --------------------------------
  1846. CALL OPEN(Dateiname usw.)
  1847. ECHO RESULT
  1848. --------------------------------
  1849. ist gleichbedeutend mit
  1850. --------------------------------
  1851. Ergebnis=OPEN(Dateiname usw.)
  1852. ECHO Ergebnis
  1853. --------------------------------
  1854. 2. Aufruf externer ARexx-
  1855. Programme
  1856. Andere ARexx-Programme k
  1857. nnen 
  1858. mit CALL "rexx:MeinProg.rexx" 
  1859. gestartet werden.
  1860. 3. Mit CALL kann in ein 
  1861. Unterprogramm verzweigt werden.
  1862. Die Unterprogramme werden alle 
  1863. mit Namen versehen. Dieser 
  1864. Name wird einfach in die erste 
  1865. Zeile einer Unterroutine 
  1866. geschrieben und ein Doppelpunkt
  1867. angeh
  1868. ngt. Die letzte Zeile der 
  1869. Unterroutine enth
  1870. lt dann ein 
  1871. RETURN (Kehre zur
  1872. ck). Nochmal
  1873. ein Beispiel mit "HelloWorld" 
  1874. llig?
  1875. --------------------------------
  1876. /* Hello World Version 1.6.*/
  1877. CALL Fensteroeffnen
  1878. CALL FrageundAntwort
  1879. Fensteroeffnen:
  1880. Erfolg=OPEN(Fenster
  1881. ,'CON:20/20/620/100/Hello World
  1882. 1.6./CLOSE',R)
  1883. IF ~Erfolg THEN ECHO "Fehler!"
  1884. RETURN
  1885. FrageundAntwort:
  1886. DO WHILE Eingabe~="Ende"
  1887.   Erfolg=WRITELN(Fenster
  1888.           ,"Gib was ein!")
  1889.   Eingabe=READLN(Fenster)
  1890.   Erfolg=WRITELN(Fenster
  1891.           ,"Du hast "||Eingabe||
  1892.             " eingegeben.")
  1893. RETURN
  1894. --------------------------------
  1895. LINKNAME
  1896. CALL 
  1897. LINKTEXT
  1898. Um festzustellen, ob ein ARexx
  1899. Port wirklich existiert, ob z.B.
  1900. YAM bereits gestartet ist, 
  1901. tigt man den Befehl SHOW().
  1902. SHOW(Option[,Name,Trennzeichen])
  1903. Option mu
  1904.  angegeben werden. 
  1905. Es gibt die folgenden 
  1906. glichkeiten:
  1907.   Clip      : Alle Eintr
  1908. ge in 
  1909.               der Clip-Liste
  1910.   Files     : Eine Liste der 
  1911.               offenen logischen 
  1912.               Dateinamen
  1913.   Internal  : Die interne Port-
  1914.               Liste
  1915.   Libraries : die ge
  1916. ffneten 
  1917.               Bibliotheken
  1918.   Ports     : die allgemeinen 
  1919.               PublicMessagePorts, 
  1920.               zu denen auch die
  1921.              ARexx-Ports geh
  1922. Es reicht jeweils die Angabe des 
  1923. ersten Buchstabens.
  1924. Wird ein Name angegeben, dann 
  1925. ndert SHOW() seine Funktion. 
  1926. Es gibt 1 zur
  1927. ck, wenn der 
  1928. unter Name angegebene Port 
  1929. gefunden wurde, und 0, wenn er
  1930. nicht gefunden wurde.
  1931. Also:
  1932. --------------------------------
  1933. YAM-Existiert=SHOW("P",YAM)
  1934. --------------------------------
  1935. Die dritte M
  1936. glichkeit ist die, 
  1937. ein beliebiges Trennzeichen f
  1938. die Liste anzugeben. 
  1939. Am sinnvollsten ist ein 
  1940. "Wagenr
  1941. cklauf", was der Return
  1942. Taste entspricht. 
  1943. Er hat den ASCII-Code 10 und 
  1944. wird angegeben als D2C(10) 
  1945. --------------------------------
  1946. ECHO SHOW("P",,D2C(10))
  1947. --------------------------------
  1948. LINKNAME
  1949. show(option,name,trennzeichen)
  1950. LINKTEXT
  1951. Um ARexx mitzuteilen, welches 
  1952. Programm angesteuert werden soll,
  1953. tigt man den Befehl ADDRESS. 
  1954. Die ARexx-Adresse (ARexx-Port), 
  1955. die dann folgen mu
  1956. , entnimmt 
  1957. man der Dokumentation des jeweil-
  1958. igen Programms.
  1959. Z.B.:
  1960. ADDRESS YAM
  1961. ADDRESS Wordworth.1
  1962. ADDRESS TCALC
  1963. ADDRESS GOLDED.1
  1964. Eine Liste der vorhandenen 
  1965. Ports erh
  1966. lt man mit 
  1967. ECHO SHOW("PORTS")
  1968. Nach dem Befehl ADDRESS YAM 
  1969. werden alle Anweisungen, die 
  1970. ARexx nicht versteht, an die 
  1971. YAM-Schnittstelle weitergeleitet.
  1972. Wenn nun YAM zuf
  1973. llig einen 
  1974. Befehl haben sollte, der auch
  1975. als ARexx-Befehl existiert,
  1976. t man ihn in Anf
  1977. hrungszeichen
  1978. setzen, damit er nicht von ARexx 
  1979. selbst interpretiert wird.
  1980. ADDRESS COMMAND 
  1981. hat eine besondere Bedeutung:
  1982. Damit k
  1983. nnen Shell-Befehle
  1984. aufgerufen werden.
  1985. --------------------------------
  1986. ADDRESS COMMAND DIR
  1987. --------------------------------
  1988. listet das aktuelle Verzeichnis 
  1989. --------------------------------
  1990. ADDRESS COMMAND
  1991. --------------------------------
  1992. hat prinzipiell die gleiche 
  1993. Bedeutung. Im ersten Fall 
  1994. wird aber nur eben schnell
  1995. der Befehl DIR an COMMAND 
  1996. bergeben, im zweiten Fall
  1997. wird die Schnittstelle als 
  1998. COMMAND definiert und alle 
  1999. weiteren Befehle an COMMAND 
  2000. geschickt.
  2001. Also: Ich habe ein Programm, 
  2002. mit dem ich z.B. YAM steuere. 
  2003. Zwischendurch ben
  2004. tige ich einen
  2005. einzigen COMMAND-Befehl. Dann 
  2006. schreibe ich ihn direkt hinter 
  2007. ADDRESS COMMAND, und alle 
  2008. folgenden Befehle gehen
  2009. wieder an YAM.
  2010. -------------------------------
  2011. ADDRESS YAM  
  2012. (Befehle an YAM)
  2013. ADDRESS COMMAND DIR 
  2014. (BEFEHLE GEHEN AN YAM) 
  2015. ADDRESS COMMAND
  2016. (Befehle gehen an COMMAND)
  2017. ADDRESS kann auch noch ein 
  2018. paar Parameter mit auf den 
  2019. Weg bekommen:
  2020. ADDRESS VALUE Variable
  2021. interpretiert Variable als 
  2022. solche und nimmt den Inhalt 
  2023. der Variablen als neuen
  2024. ARexx-Port. Z.B.:
  2025. --------------------------------
  2026. Var="YAM"
  2027. ADDRESS VALUE Var
  2028. --------------------------------
  2029. Alle Befehle gehen an YAM.
  2030. ADDRESS ohne weitere Angaben 
  2031. schaltet auf den vorhergehenden 
  2032. ARexx-Port zur
  2033. ADDRESS
  2034. LINKNAME
  2035. #Address[{symbol|string}] [ausdruck]
  2036.